共计 111 个字符,预计需要花费 1 分钟才能阅读完成。
前言
注解是 Java 在继 JDK1.5 以及之后版本新增的一大特性,其作用可以用来标识或者值注入等等,在 Java 中我们常使用 JDK 自带的注解有 code>@Override、code>@Deprecation、code>@SuppviseWarnings 那么要想更加深入了解注解,只有通过自定义注解来进行了解了。
元注解
在进行自定义注解之前,我们先来了解一下元注解:
@Target 说明 Annotation 所修饰的对象范围
其值有(ElementType{采用数组形式}):
- CONSTRUCTOR: 用于描述构造器
- FIELD: 用于描述域
- LOCAL_VARIABLE: 用于描述局部变量
- METHOD: 用于描述方法
- PACKAGE: 用于描述包
- PARAMETER: 用于描述参数
- TYPE: 用于描述类、接口 (包括注解类型) 或枚举声明
@Retention 说明 Annotation 的生命周期
其值有(RetentionPolicy):
- SOURCE: 在源文件中有效
- CLASS: 在 class 文件中有效
- RUNTIME: 在运行时有效
@Documented 用于描述其它类型的 annotation 应该被作为被标注的程序成员的公共 API,因此可以被例如 javadoc 此类的工具文档化。
@Inherited 元注解是一个标记注解,@Inherited 说明了某个被标注的类型可以被其子类继承的。
定义
首先,在 Java 中我们要定义一个注解通过如下方法定义:
public @interface Column{String value();
}
并可以在其声明上方定义元注解,例如:
@Retention(RetentionPolicy.RUNTIME)
@Target({ElementType.FIELD})
public @interface Column {String value();
}
此时此类只可以用于描述类、接口 (包括注解类型) 或枚举声明,并且声明周期是运行时有效的。
取值
调用使用了该注解的实例的
如果是字段,则通过
getClass()
方法,然后通过 getClass().getAnnotation(" 注解类名 ".class)
方法拿到用于描述类、接口 (包括注解类型) 或枚举声明的注解类实例,然后通过 value()
方法拿到其对应的值。如果是字段,则通过
getDeclaredFields()
方法拿到其所有字段,然后 foreach 循环通过 value()
方法拿到其注解值,再通过反射拿到对应的字段的值。后记
若文章中有纰漏或者其他方面的不足,请麻烦在下方评论区指出错误或提出建议,感谢您的支持!
正文完
使用官方微信小程序体验更多功能